//告诉我们当前文件属于哪个包
package main

//导入包，便于调用相应的功能函数
import "fmt"

//大写字母开头的变量可以外部导出、小写字母开头的变量不可导出，是私有的

func test_var(){
	/*
		Go语言变量声明有三种方式：
		(1)var 变量名称 变量类型 = 变量值
		(2)var 变量名称 = 变量值
		(3)变量名称 := 变量值    只能在函数体内使用
	*/


	//定义布尔变量--两种声明方式的写法：详细 & 简短声明
	var test_bool bool = false
	test_bool1 := true
	fmt.Println(test_bool)
	fmt.Println(test_bool1)

	//定义整形变量
	var test_int int = 100
	test_int1 := 110
	fmt.Println(test_int)
	fmt.Println(test_int1)

	//定义字符串变量
	var test_str string = "hello world"
	test_str1 := "hello go"
	fmt.Println(test_str)
	fmt.Println(test_str1)

	//定义浮点型
	var test_float float64 = 3.1415926
	test_float1 := 3.14
	fmt.Println(test_float)
	fmt.Println(test_float1)

	//定义byte型
	var frist_byte byte = 0xfe
	frist_byte1 := 0xfd
	fmt.Printf("0x%x\n",frist_byte)
	fmt.Printf("0x%x\n",frist_byte1)

	//测试iota
	const test_iota int = iota
	fmt.Printf("iota: %d\n", test_iota)

	var min,max int = 1, 3
	min1,max1 := 10, 20
	fmt.Println(min + max)
	fmt.Println(min1 + max1)
}

func init() {
	fmt.Println("init函数会在main函数前被自动调用!")
}

func main() {
	//调用方法的方式：包名.方法名称 <pkgName>.<funcName>
	fmt.Println("Hello World!")
	fmt.Println('A') //输出ASCII码
	fmt.Printf("%d\n", 300)
	test_var()
}